package com.ruoyi.system.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.PageTemplateMapper;
import com.ruoyi.system.domain.PageTemplate;
import com.ruoyi.system.service.IPageTemplateService;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.transaction.annotation.Transactional;

/**
 * 页面模板Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-03-30
 */
@Service
public class PageTemplateServiceImpl implements IPageTemplateService 
{
    @Autowired
    private PageTemplateMapper pageTemplateMapper;

    /**
     * 查询页面模板
     * 
     * @param id 页面模板主键
     * @return 页面模板
     */
    @Override
    public PageTemplate selectPageTemplateById(Long id)
    {
        return pageTemplateMapper.selectPageTemplateById(id);
    }

    /**
     * 查询页面模板列表
     * 
     * @param pageTemplate 页面模板
     * @return 页面模板
     */
    @Override
    public List<PageTemplate> selectPageTemplateList(PageTemplate pageTemplate)
    {
        return pageTemplateMapper.selectPageTemplateList(pageTemplate);
    }

    /**
     * 新增页面模板
     * 
     * @param pageTemplate 页面模板
     * @return 结果
     */
    @Override
    public int insertPageTemplate(PageTemplate pageTemplate)
    {
        pageTemplate.setCreateTime(DateUtils.getNowDate());
        return pageTemplateMapper.insertPageTemplate(pageTemplate);
    }

    /**
     * 修改页面模板
     * 
     * @param pageTemplate 页面模板
     * @return 结果
     */
    @Override
    public int updatePageTemplate(PageTemplate pageTemplate)
    {
        pageTemplate.setUpdateTime(DateUtils.getNowDate());
        return pageTemplateMapper.updatePageTemplate(pageTemplate);
    }

    /**
     * 批量删除页面模板
     * 
     * @param ids 需要删除的页面模板主键
     * @return 结果
     */
    @Override
    public int deletePageTemplateByIds(Long[] ids)
    {
        return pageTemplateMapper.deletePageTemplateByIds(ids);
    }

    /**
     * 删除页面模板信息
     * 
     * @param id 页面模板主键
     * @return 结果
     */
    @Override
    public int deletePageTemplateById(Long id)
    {
        return pageTemplateMapper.deletePageTemplateById(id);
    }

    /**
     * 复制页面模板
     * 
     * @param id 需要复制的页面模板主键
     * @return 新模板ID
     */
    @Override
    @Transactional
    public Long copyPageTemplate(Long id)
    {
        // 获取原模板
        PageTemplate sourceTemplate = pageTemplateMapper.selectPageTemplateById(id);
        if (sourceTemplate == null) {
            return null;
        }

        // 创建新模板并复制数据
        PageTemplate newTemplate = new PageTemplate();
        newTemplate.setName(sourceTemplate.getName() + "_复制");
        newTemplate.setType(sourceTemplate.getType());
        newTemplate.setThumbnail(sourceTemplate.getThumbnail());
        newTemplate.setHtmlContent(sourceTemplate.getHtmlContent());
        newTemplate.setCssContent(sourceTemplate.getCssContent());
        newTemplate.setJsContent(sourceTemplate.getJsContent());
        newTemplate.setConfigSchema(sourceTemplate.getConfigSchema());
        newTemplate.setCategoryId(sourceTemplate.getCategoryId());
        newTemplate.setStatus("0"); // 设置为正常状态
        newTemplate.setCreateBy(SecurityUtils.getUsername());
        newTemplate.setCreateTime(DateUtils.getNowDate());
        
        // 插入新模板
        pageTemplateMapper.insertPageTemplate(newTemplate);
        
        return newTemplate.getId();
    }
}
